//这个仅仅作为流水线risc-cpu的测试项目
//暴死率100%
//不作为参考，仅作为试错
//16位

module test (
    input wire clk,
    input wire rstn,
    output wire [15:0] sign
);

//!!test 0011 : MOV
/*
我们将指令的第0 位到第4 位称为操作符
第5 位到第7  位称为操作数1（记为D1）
第8 位到第10 位称为操作数2（记为D2）
第11位到第13 位称为操作数3（记为D3）
第8 位到第15 位称为立即数1（记为I1）
第11位到第15 位称为立即数2（记为I2）
这里的位是从高位向低位计的
*/

//R3 0011 0010 0010 0000

reg [15:0] Instruction_register [64:0];
reg [15:0] Memory [128:0];
//sign = Memory[1]
//R0 = Memory[0]
    
assign sign = Memory[1];

always @(posedge clk or negedge rstn) begin
    if (rstn == 1'b0) begin
        Memory[0] <= {16{1'b0}};
    end
    else begin
        
        case (Memory[3][15:12])

            4'b0011:begin
                Memory[Memory[3][11:8]] <= Memory[Memory[3][7:4]];
            end

            default:Memory[0] <= {16{1'b0}};

        endcase

    end
end


endmodule